package com.health.record.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.health.common.annotation.Excel;
import com.health.common.core.domain.BaseEntity;
import java.math.BigDecimal;

/**
 * 预约对象 medical_appointment_detail
 *
 * @author ruoyi
 * @date 2025-10-30
 */
public class MedicalAppointmentDetail extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 预约明细ID */
    private Long detailId;

    /** 预约排班ID */
    @Excel(name = "预约排班ID")
    private Long scheduleId;

    /** 用户ID */
    private Long userId;

    /** 患者姓名 */
    @Excel(name = "患者姓名")
    private String patientName;

    /** 患者性别: 1-男, 2-女, 0-未知 */
    private Long patientGender;

    /** 患者年龄 */
    private Long patientAge;

    /** 患者电话 */
    private String patientPhone;

    /** 症状描述 */
    private String symptoms;

    /** 预约号 */
    @Excel(name = "预约号")
    private String appointmentNo;

    /** 就诊时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "就诊时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date visitTime;

    /** 状态: 0-待确认, 1-已确认, 2-已完成, 3-已取消, 4-已过期 */
    @Excel(name = "状态: 0-待确认, 1-已确认, 2-已完成, 3-已取消, 4-已过期")
    private String status;

    /** 取消原因 */
    private String cancelReason;

    // 新增关联字段
    /** 医院名称 */
    private String hospitalName;

    /** 科室名称 */
    private String departmentName;

    /** 医生姓名 */
    private String doctorName;

    /** 挂号费用 */
    private BigDecimal appointmentFee;

    public void setDetailId(Long detailId)
    {
        this.detailId = detailId;
    }

    public Long getDetailId()
    {
        return detailId;
    }

    public void setScheduleId(Long scheduleId)
    {
        this.scheduleId = scheduleId;
    }

    public Long getScheduleId()
    {
        return scheduleId;
    }

    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }

    public void setPatientName(String patientName)
    {
        this.patientName = patientName;
    }

    public String getPatientName()
    {
        return patientName;
    }

    public void setPatientGender(Long patientGender)
    {
        this.patientGender = patientGender;
    }

    public Long getPatientGender()
    {
        return patientGender;
    }

    public void setPatientAge(Long patientAge)
    {
        this.patientAge = patientAge;
    }

    public Long getPatientAge()
    {
        return patientAge;
    }

    public void setPatientPhone(String patientPhone)
    {
        this.patientPhone = patientPhone;
    }

    public String getPatientPhone()
    {
        return patientPhone;
    }

    public void setSymptoms(String symptoms)
    {
        this.symptoms = symptoms;
    }

    public String getSymptoms()
    {
        return symptoms;
    }

    public void setAppointmentNo(String appointmentNo)
    {
        this.appointmentNo = appointmentNo;
    }

    public String getAppointmentNo()
    {
        return appointmentNo;
    }

    public void setVisitTime(Date visitTime)
    {
        this.visitTime = visitTime;
    }

    public Date getVisitTime()
    {
        return visitTime;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }

    public void setCancelReason(String cancelReason)
    {
        this.cancelReason = cancelReason;
    }

    public String getCancelReason()
    {
        return cancelReason;
    }

    // 新增关联字段的getter和setter
    public String getHospitalName() {
        return hospitalName;
    }

    public void setHospitalName(String hospitalName) {
        this.hospitalName = hospitalName;
    }

    public String getDepartmentName() {
        return departmentName;
    }

    public void setDepartmentName(String departmentName) {
        this.departmentName = departmentName;
    }

    public String getDoctorName() {
        return doctorName;
    }

    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }

    public BigDecimal getAppointmentFee() {
        return appointmentFee;
    }

    public void setAppointmentFee(BigDecimal appointmentFee) {
        this.appointmentFee = appointmentFee;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("detailId", getDetailId())
                .append("scheduleId", getScheduleId())
                .append("userId", getUserId())
                .append("patientName", getPatientName())
                .append("patientGender", getPatientGender())
                .append("patientAge", getPatientAge())
                .append("patientPhone", getPatientPhone())
                .append("symptoms", getSymptoms())
                .append("appointmentNo", getAppointmentNo())
                .append("visitTime", getVisitTime())
                .append("status", getStatus())
                .append("cancelReason", getCancelReason())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("hospitalName", getHospitalName())
                .append("departmentName", getDepartmentName())
                .append("doctorName", getDoctorName())
                .append("appointmentFee", getAppointmentFee())
                .toString();
    }
}